Software programs can be quite complex in part because of their intended functionality, and in part due to a requirement to run on a variety of hardware configurations and along with a variety of other software programs. Due to the complexity, software faults resulting in a program aborting or entering a non-responsive state, can occur more frequently than desired. Due to increasing dependence on computers, it is desirable to minimize the occurrence of faults and provide recommendations for resolving the problem to the user.
Many programs and operating systems now provide error messages when a program aborts or runs erratically. In some cases, the messages simply inform the user that an error has occurred, while other software products provide at least some information about the error.
In many cases, the user must contact a vendor's technical support personnel to solve a software problem. Often a customer must wait for access to technical support personnel. It is often difficult for technical support personnel to acquire the information relevant to solving a problem from a user. Finally, it can be difficult for a technical support person to use available information to suggest a possible solution.
To reduce costs, many vendors provide automated help in the form of a fax-back service or a web site or both. Often, a menu system helps a user identify a problem from a list and the service then provides a recommended course of action for the user. While such automated systems can reduce costs to the vendor, it is often difficult and time consuming to find relevant information. Also, the number of possible configurations that can be considered by menu-driven systems is limited.